import { Model } from 'mongoose';
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Todo, TodoDocument } from './todo.schema';
import { CreateTodoDto } from './dto/create-todo.dto';
import { ModifyTodoDto } from './dto/modify-todo.dto';
import { DeleteTodoDto } from './dto/delete-todo.dto';

@Injectable()
export class TodoService {
  constructor(@InjectModel(Todo.name) private todoModel: Model<TodoDocument>) {}

  async create(createTodoDto: CreateTodoDto): Promise<Todo> {
    return this.todoModel.create(createTodoDto);
  }

  async modify(modifyTodoDto: ModifyTodoDto): Promise<Todo> {
    return this.todoModel.findOneAndUpdate({ _id: modifyTodoDto._id }, modifyTodoDto, { new: true, useFindAndModify: true });
  }

  async delete(deleteTodoDto: DeleteTodoDto): Promise<Todo> {
    return this.todoModel.deleteOne(deleteTodoDto, { useFindAndModify: true });
  }

  async getList(): Promise<Todo[]> {
    return this.todoModel.find().exec();
  }
}
